package com.dragon.modules.yuegou.mapper.merchant;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dragon.modules.yuegou.entity.merchant.MerchantEntity;
import com.dragon.modules.yuegou.model.merchant.Merchant;
import com.dragon.modules.yuegou.query.merchant.MerchantInfoQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 商户信息 Mapper接口
 *
 * @author pbuilder generated
 * @date 2020-08-26 11:10:10
 * @version 2.0
 */
@Component("merMerchantMapper")
public interface MerchantMapper extends BaseMapper<MerchantEntity> {

	/**
	 * 集团分页查询商圈商户信息
	 */
	IPage<Merchant> search(IPage<MerchantEntity> page, @Param("query") MerchantInfoQuery query);


	List<Merchant> search(@Param("query") MerchantInfoQuery query);

	/**
	 * 根据商圈id或业态id和商户名称查询商户
	 */
	List<Merchant> getMerchantById(@Param("id") String id, @Param("busdId") String busdId, @Param("merchantName") String merchantName);

	/**
	 * 根据集团id或商圈id或业态id查询商户
	 */
	List<Merchant> getMerchantByIds(@Param("groupId") String groupId, @Param("busdId") String busdId,
                                    @Param("btypeId") String btypeId, @Param("merchantName") String merchantName);

	/**
	 * 根据悦卡id查询可用商户
	 * 
	 * @param cardId
	 * @return
	 */
	List<Merchant> getMerchantByCardId(@Param("cardId") String cardId);

	/**
	 * 根据spuId查询可核销商户
	 */
	List<Merchant> listBySpuId(@Param("spuId") String spuId);

	/**
	 * 根据spuId查询可核销商户
	 */
	IPage<Merchant> listBySpuId(IPage<MerchantEntity> page, @Param("spuId") String spuId);

	/**
	 * 查询特殊商户费率
	 */
	IPage<Merchant> searchFeeRatio(IPage<MerchantEntity> page, @Param("busdId") String busdId,
                                   @Param("merchantName") String merchantName);

	/***
	 * 查询套餐可核销商户列表
	 */
	IPage<Merchant> tspuMerchantList(IPage<MerchantEntity> page, @Param("spuId") String spuId);

	/**
	 * 根据商户ID查询商户信息
	 */
	Merchant getMerchantByMerId(@Param("id") String id);

	/**
	 * 查询员工版 员工可抄商户列表
	 */
	IPage<Merchant> findMerchantInfoList(IPage<MerchantEntity> page, @Param("query") MerchantInfoQuery query);

	/**
	 * 查询员工版 销售数据列表
	 */
	IPage<Merchant> findMerchantList(IPage<MerchantEntity> page, @Param("query") MerchantInfoQuery query);

	/**
	 * 查询员工版 销售数据 为抄数据量
	 */
	Integer countMerchantList(@Param("query") MerchantInfoQuery query);

	/**
	 * APP版 获取商户信息
	 */
	Merchant getMerchantInfo(@Param("merchantId") String merchantId, @Param("userId") String userId);

	/***
	 * 到家优质商家信息分页搜索
	 */
	IPage<Merchant> searchGoodBusiness(IPage<MerchantEntity> page, @Param("btypeId") String btypeId,
                                       @Param("busdId") String busdId, @Param("name") String name);

	/**
	 * 查询推荐商品列表
	 */
	IPage<Merchant> recommendMerchantList(IPage<MerchantEntity> page, @Param("busdId") String busdId);
	
	List<Merchant> getOwnerTypeMerchantList(@Param("busdId") String busdId, @Param("skuTypeList") List<Integer> skuTypeList);

	/**
	 * 清楚商户的商品主图
	 * @param merchantId
	 */
	void clearMerchantImages(@Param("merchantId") String merchantId);
}
